package org.mirrentools.attendance.console.service;

import org.mirrentools.attendance.console.service.impl.RecordServiceImpl;

import io.vertx.core.AsyncResult;
import io.vertx.core.Handler;
import io.vertx.core.MultiMap;
import io.vertx.core.json.JsonObject;
import io.vertx.ext.jdbc.JDBCClient;
import io.vertx.ext.sql.assist.SQLExecute;
import io.vertx.ext.web.RoutingContext;

/**
 * Record数据服务接口
 *
 * @author
 */
public interface RecordService {
  /**
   * 创建一个实例
   *
   * @param execute
   * @return
   */
  static RecordService create(SQLExecute<JDBCClient> execute) {
    return new RecordServiceImpl(execute);
  }

  /**
   * 获取行事历分类
   *
   * @param params
   * @param handler
   */
  void findCalendarGroup(MultiMap params, Handler<AsyncResult<JsonObject>> handler);

  /**
   * 获取行事历以及用户的考勤状态
   *
   * @param params
   * @param handler
   */
  void findCalendar(MultiMap params, Handler<AsyncResult<JsonObject>> handler);

  /**
   * 获取每小时记录
   *
   * @param params
   * @param handler
   */
  void findDays(MultiMap params, Handler<AsyncResult<JsonObject>> handler);

  /**
   * 获取每天记录
   *
   * @param params
   * @param handler
   */
  void findMonths(MultiMap params, Handler<AsyncResult<JsonObject>> handler);

  /**
   * 获取每月统计
   *
   * @param params
   * @param handler
   */
  void findCounts(MultiMap params, Handler<AsyncResult<JsonObject>> handler);

  /**
   * 获取最后一次打卡记录
   *
   * @param params
   * @param handler
   */
  void getLastWork(MultiMap params, Handler<AsyncResult<JsonObject>> handler);

  /**
   * 工作
   *
   * @param params
   * @param handler
   */
  void work(MultiMap params, Handler<AsyncResult<JsonObject>> handler);

  /**
   * 休息
   *
   * @param params
   * @param handler
   */
  void rest(MultiMap params, Handler<AsyncResult<JsonObject>> handler);

  /**
   * 上传图片
   * @param rct 内容的上下文
   * @param params 请求的参数
   * @param handler 响应处理器
   */
  void uploadImage(RoutingContext rct,MultiMap params, Handler<AsyncResult<JsonObject>> handler);

}
